import requests
from bs4 import BeautifulSoup
import os

# 模拟浏览器请求头，可根据实际情况适当调整，有助于更好地获取网页内容
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"
}

# 这里假设是包含示例HTML代码那种网页的URL，你需要替换成真实的目标网页地址
url = "https://www.vcg.com/creative-image/jiayangtuzi/"
try:
    # 发送GET请求获取网页内容
    response = requests.get(url, headers=headers)
    response.raise_for_status()
    # 使用BeautifulSoup解析网页内容，这里使用html.parser作为解析器，你也可以根据需求换用lxml等解析器
    soup = BeautifulSoup(response.text, 'html.parser')

    # 用于存储提取到的图片链接
    image_urls = []
    # 根据HTML结构，查找所有class为lazyload_hk且data-src属性符合特定格式的img标签（这里按照你示例的结构来查找）
    img_tags = soup.find_all('img', class_='lazyload_hk', attrs={'data-src': lambda x: x and x.startswith('//vcg')})
    for img in img_tags:
        # 获取data-src属性的值作为图片链接，并添加协议头（原链接是相对路径形式，补充协议使其成为完整URL）
        image_url = "https:" + img.get('data-src')
        image_urls.append(image_url)

    # 定义保存图片的本地目录，可根据需求修改
    save_dir = "your_local_image_directory"
    if not os.path.exists(save_dir):
        os.makedirs(save_dir)

    # 遍历图片链接列表，逐个下载图片
    for index, image_url in enumerate(image_urls):
        try:
            # 发送GET请求获取图片内容
            img_response = requests.get(image_url)
            img_response.raise_for_status()
            # 构建本地保存的文件名，这里简单用序号命名，你也可以根据图片链接中的相关信息生成更合适的文件名
            save_path = os.path.join(save_dir, f"image_{index + 1}.jpg")
            with open(save_path, 'wb') as f:
                f.write(img_response.content)
            print(f"图片 {index + 1} 下载成功，已保存至 {save_path}")
        except requests.RequestException as e:
            print(f"下载图片 {index + 1} 时出现错误: {e}")
except requests.RequestException as e:
    print("获取网页内容出现错误:", e)